package main

import (
	"ip-parser/internal/plugins"
	"ip-parser/internal/ui"
	"log"
	"os"
	"os/signal"
	"syscall"
)

// 程序入口点
func main() {
	// 初始化日志
	log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
	log.Println("红方攻击系统启动...")

	// 创建UI管理器
	uiManager := ui.NewUIManager()

	// 初始化插件系统
	pluginManager := plugins.NewPluginManager()

	// 注册所有可用插件
	registerPlugins(pluginManager)

	// 启动UI交互
	go uiManager.Start(pluginManager)

	// 等待中断信号
	sigChan := make(chan os.Signal, 1)
	signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
	<-sigChan

	// 优雅退出
	log.Println("正在关闭系统...")
	uiManager.Stop()
	log.Println("系统已关闭")
}

// 注册所有可用的攻击插件
func registerPlugins(pm *plugins.PluginManager) {
	// 网络侦察插件（整合了旧的IP解析、CDN绕过和信息收集功能）
	pm.RegisterPlugin("netrecon", "网络侦察：IP解析、CDN绕过、端口扫描", plugins.NewNetworkReconPlugin())

	// 漏洞利用插件
	pm.RegisterPlugin("exploit", "漏洞利用", plugins.NewExploitPlugin())

	// 持久化插件
	pm.RegisterPlugin("persistence", "持久化控制", plugins.NewPersistencePlugin())

	// 防御绕过插件
	pm.RegisterPlugin("bypass", "防御绕过", plugins.NewBypassPlugin())

	// 拒绝服务插件
	pm.RegisterPlugin("dos", "拒绝服务攻击", plugins.NewDOSPlugin())

	// 自动化攻击插件
	pm.RegisterPlugin("auto", "自动化攻击", plugins.NewAutoAttackPlugin())
}
